<?php defined('SYSPATH') or die('No direct script access.');

// -- Environment setup --------------------------------------------------------

// Load the core Kohana class
require SYSPATH.'classes/kohana/core'.EXT;

if (is_file(APPPATH.'classes/kohana'.EXT))
{
	// Application extends the core
	require APPPATH.'classes/kohana'.EXT;
}
else
{
	// Load empty core extension
	require SYSPATH.'classes/kohana'.EXT;
}

/**
 * Set the default time zone.
 *
 * @see  http://kohanaframework.org/guide/using.configuration
 * @see  http://php.net/timezones
 */
date_default_timezone_set('Asia/Harbin');

/**
 * Set the default locale.
 *
 * @see  http://kohanaframework.org/guide/using.configuration
 * @see  http://php.net/setlocale
 */
setlocale(LC_ALL, 'en_US.utf-8');

/**
 * Enable the Kohana auto-loader.
 *
 * @see  http://kohanaframework.org/guide/using.autoloading
 * @see  http://php.net/spl_autoload_register
 */
spl_autoload_register(array('Kohana', 'auto_load'));

/**
 * Enable the Kohana auto-loader for unserialization.
 *
 * @see  http://php.net/spl_autoload_call
 * @see  http://php.net/manual/var.configuration.php#unserialize-callback-func
 */
ini_set('unserialize_callback_func', 'spl_autoload_call');

// -- Configuration and initialization -----------------------------------------

/**
 * Set the default language
 */
I18n::lang('en-us');

/**
 * Set Kohana::$environment if a 'KOHANA_ENV' environment variable has been supplied.
 *
 * Note: If you supply an invalid environment name, a PHP warning will be thrown
 * saying "Couldn't find constant Kohana::<INVALID_ENV_NAME>"
 */
if (isset($_SERVER['KOHANA_ENV']))
{
	Kohana::$environment = constant('Kohana::'.strtoupper($_SERVER['KOHANA_ENV']));
}

/**
 * Initialize Kohana, setting the default options.
 *
 * The following options are available:
 *
 * - string   base_url    path, and optionally domain, of your application   NULL
 * - string   index_file  name of your index file, usually "index.php"       index.php
 * - string   charset     internal character set used for input and output   utf-8
 * - string   cache_dir   set the internal cache directory                   APPPATH/cache
 * - boolean  errors      enable or disable error handling                   TRUE
 * - boolean  profile     enable or disable internal profiling               TRUE
 * - boolean  caching     enable or disable internal caching                 FALSE
 */
Kohana::init(array(
	'base_url'   => '/',
));

/**
 * Attach the file write to logging. Multiple writers are supported.
 */
Kohana::$log->attach(new Log_File(APPPATH.'logs'));

/**
 * Attach a file reader to config. Multiple readers are supported.
 */
Kohana::$config->attach(new Config_File);

/**
 * Enable modules. Modules are referenced by a relative or absolute path.
 */
Kohana::modules(array(
	// 'auth'       => MODPATH.'auth',       // Basic authentication
	'cache'      => MODPATH.'cache',      // Caching with multiple backends
	// 'codebench'  => MODPATH.'codebench',  // Benchmarking tool
	'database'   => MODPATH.'database',   // Database access
	'pagination' => MODPATH.'pagination',   // Database access
    //'image'      => MODPATH.'image',      // Image manipulation
	// 'orm'        => MODPATH.'orm',        // Object Relationship Mapping
	//'unittest'   => MODPATH.'unittest',   // Unit testing
	//'userguide'  => MODPATH.'userguide',  // User guide and API documentation
	'smarty'     => MODPATH.'smarty',
	'acl'        => MODPATH.'acl',
	//'forum'      => MODPATH.'groups',

	'passport'     => MODPATH.'passport',
	'checkcode'  => MODPATH.'checkcode',  // Benchmarking tool
	'database'   => MODPATH.'database',   // Database access
	'pagination' => MODPATH.'pagination',   // Database access
    'image'      => MODPATH.'image',      // Image manipulation
	'smarty'     => MODPATH.'smarty',
	'notice'        => MODPATH.'notice',
    'api'           => MODPATH.'api',
    'eventsmq'      => MODPATH.'eventsmq',
    'phpexcel'        => MODPATH.'phpexcel',
    'form'         => MODPATH.'form',
    'payment'      => MODPATH.'payment',
    'jpush'      => MODPATH.'jpush',

    'fuli'       => MODPATH.'fuli',
    'survey'     => MODPATH.'survey',
    'map'        => MODPATH.'map',
    'article'        => MODPATH.'article',
    'track'      => MODPATH.'track',
    'activity'   => MODPATH.'activity',
    'ziying'   => MODPATH.'ziying',
    'line'=>MODPATH.'line',
    'userext'    => MODPATH.'userext',
    'order'      => MODPATH.'order',
    'payment'    => MODPATH.'payment',
    'yunpiansms'    => MODPATH.'yunpiansms',
    'usercenter'    => MODPATH.'usercenter',    // 个人中心
    'activation'    => MODPATH.'activation',    // 邮件认证模块
    'guider'        => MODPATH.'guider',        // 导游中心
    'popularize'    => MODPATH.'popularize',    // 推广营销模块
    'scenicspot'    => MODPATH.'scenicspot',    // 景点图书馆模块
    'money'         => MODPATH.'money',         // 现金对账
    'usercomments'  => MODPATH.'usercomments',    // 用户评论模块
    'chat'          => MODPATH.'chat',    // 用户评论模块
    'qrcodepay'     => MODPATH.'qrcodepay',    // 微信支付
    'chong'         => MODPATH.'chong',    // 支付宝支付
    'openlogin'     => MODPATH.'openlogin',    // 支付宝支付
	));

define ('_CDN_', '');

/**
 * Set the routes. Each route must have a minimum of a name, a URI and a set of
 * defaults for the URI.
 */

Route::set('test', 'test(/<controller>(/<action>(/<param1>(/<param2>))))', array('param1' => '([^/]+)'))
	->defaults(array(
		'controller' => 'foo',
		'action'     => 'index',
		'directory'  => 'test',
	));

Route::set('command', 'cmd(/<action>(/<param1>(/<param2>)))', array('param1' => '([^/]+)'))
	->defaults(array(
		'controller' => 'cmd',
		'action'     => 'index',
	));

Route::set('api', 'api(/<controller>(/<action>(/<param1>(/<param2>))))')
	->defaults(array(
		'controller' => 'user',
		'action'     => 'index',
		'directory'  => 'api',
	));


Route::set('app', 'm(/<controller>(/<action>(/<param1>(/<param2>))))')
	->defaults(array(
		'controller' => 'homepage',
		'action'     => 'index',
		'directory'  => 'app',
	));


Route::set('admin', 'admin(/<controller>(/<action>(/<param1>(/<param2>))))')
	->defaults(array(
		'controller' => 'message',
		'action'     => 'index',
		'directory'  => 'admin',
	));

Route::set('passport', 'passport(/<action>(/<param1>(/<param2>)))')
	->defaults(array(
		'controller' => 'passport',
		'action'     => 'index',
	));

Route::set('checkcode', 'checkcode(/<action>(/<param1>(/<param2>)))')
	->defaults(array(
		'controller' => 'checkcode',
		'action'     => 'index',
	));
	
 Route::set('openlogin', 'openlogin(/<action>(/<param1>(/<param2>)))')
	->defaults(array(
		'controller' => 'openlogin',
		'action'     => 'index',
	));
 
Route::set('default', '(<controller>(/<action>(/<param1>(/<param2>))))')
    ->defaults(array(
		'controller' => 'homepage',
		'action'     => 'index',
		'directory'  => 'www',
    ));
